跳到主要内容

containerd 运行时

containerd 作为一个容器运行时,默认是可以直接从 Docker Hub 拉取公开镜像的。但是,如果你需要从 Docker Hub 拉取私有仓库的镜像,或者你需要通过代理服务器来拉取镜像,你需要进行一些额外的配置。

# 检查版本
containerd --version

配置拉取私有仓库的镜像

1、创建 containerd 配置文件

如果你还没有 containerd 的配置文件,你需要创建一个。配置文件通常位于 /etc/containerd/config.toml

2、配置认证信息

你需要在配置文件中添加 Docker Hub 的认证信息。你可以使用 ctr 命令来生成认证信息:

ctr images pull --user <your-dockerhub-username> docker.io/<your-image>

当系统提示你输入密码时,输入你的 Docker Hub 密码。

ctr 命令会将认证信息存储在 $HOME/.docker/config.json 文件中。

3、containerd 配置文件中引用认证信息

打开 /etc/containerd/config.toml 文件,并添加以下内容来引用认证信息:

[plugins."io.containerd.grpc.v1.cri".registry.configs."docker.io".auth]
username = "<your-dockerhub-username>"
password = "<your-dockerhub-password>"

替换 <your-dockerhub-username><your-dockerhub-password> 为你的 Docker Hub 用户名和密码。

4、重启 containerd

保存配置文件并重启 containerd 服务:

sudo systemctl restart containerd

配置阿里云的私有镜像

1、获取阿里云的认证信息

首先,你需要在阿里云的容器镜像服务上创建一个访问凭证(AccessKey 和 SecretKey)。你可以在阿里云控制台的“访问控制”部分创建这个访问凭证。

2、登录到阿里云的容器镜像服务

使用 docker login 命令登录到阿里云的容器镜像服务:

docker login --username=<your-aliyun-username> registry.cn-shenzhen.aliyuncs.com

系统将提示你输入密码,这里你需要输入你的阿里云访问凭证的 SecretKey。

登录成功后,Docker 的认证信息将被保存到 $HOME/.docker/config.json 文件中。

3、配置 containerd 使用阿里云的容器镜像服务

编辑 containerd 的配置文件,通常位于 /etc/containerd/config.toml

sudo nano /etc/containerd/config.toml

在配置文件中添加阿里云的容器镜像服务配置:

[plugins."io.containerd.grpc.v1.cri".registry.configs."registry.cn-shenzhen.aliyuncs.com".auth]
username = "<your-aliyun-username>"
password = "<your-secret-key>"

替换 <your-aliyun-username><your-secret-key> 为你的阿里云用户名和访问凭证的 SecretKey。

4、重启 containerd

保存配置文件并重启 containerd 服务:

sudo systemctl restart containerd

通过以上步骤,你应该能够从阿里云的容器镜像服务拉取私有仓库的镜像了。

请注意,根据你系统的具体配置和需求,可能还需要进行其他的配置和调整。确保你已经充分了解了 containerd 和阿里云容器镜像服务的相关配置要求和最佳实践。

配置代理服务器

通过

kubectl get events

可以发现国内很多镜像都拉取不了

如果你需要通过代理服务器来拉取镜像,你可以在 containerd 配置文件中进行如下配置:

1、打开 containerd 配置文件:

打开 /etc/containerd/config.toml 文件。

2、添加代理配置:

在相应的位置添加代理配置。例如:

[plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
endpoint = ["registry.aliyuncs.com/google_containers"]

[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://------.mirror.aliyuncs.com", "https://registry-1.docker.io"]

私有镜像仓库位址请自行阿里云获取

3、重启 containerd

保存配置文件并重启 containerd 服务:

sudo systemctl restart containerd

通过上述步骤,你应该能够配置 containerd 以使用 Docker Hub 的私有仓库和代理服务器。请注意,根据你系统的具体配置和需求,可能还需要进行其他的配置和调整。

K3s 配置

k3s 对配置文件的要求是 registries.yaml,所以我们需要将上面的配置转换一下

sudo vim /etc/rancher/k3s/registries.yaml
mirrors:
"k8s.gcr.io":
endpoint:
- "https://lank8s.cn"
- "https://k8s.lank8s.cn"
"gcr.io":
endpoint:
- "https://gcr.lank8s.cn"
"ghcr.io":
endpoint:
- "https://ghcr.lank8s.cn"
"registry.k8s.io":
endpoint:
- "https://registry.lank8s.cn"
"docker.io":
endpoint:
- "https://------.mirror.aliyuncs.com"
- "https://registry-1.docker.io"

配置完后重启一下 k3s

sudo systemctl restart k3s